/**
	文件名称：CommonUtil.js
	作者	: Yuce
	编制时间: 2010-03-24
	文件内容：一些常用的js公用类。工具类
	包括方法：
	g_FormFieldIsNull	 判断DBForm的指定字段是否为空
	g_GetObjXY 		 获取页面中某个元素的绝对座标
	g_IsDigit    		 校验是否全由数字组成
	g_IsFloat(s,pDecimal) 校验是否是合法的小数
	g_IsEmail 		 判断合法的email地址
	g_IsTeleNumber		 校验普通电话、传真号码：可以“+”开头，除数字外，可含有“-”
	g_IsPostalCode 		校验邮政编码 6位数字
	g_IsMobileNumber 	校验手机号码：必须以数字开头，除数字外，可含有“-”
	g_IsDate		判断日期格式是否合法，符合yyyy-mm-dd
	g_IsDateTime		校验日期时间是否合法yyyy-mm-dd H24:MI:SS这种格式的日期+时间
	g_getStrLen 		获取字符串的长度，如果字符串中包括中文等双字节代码，则其长度算为2。
	g_getSubStrInByte			获取子字符串，参数长度为字节长度。
	g_StringTrim		字符串trim方法，取消到前后的空格
	g_GetSysDateTime	请求数据库获取数据库的日期和时间
	g_GetSysDate		请求数据库获取数据库日期
	g_GetSysTime		请求数据库获取数据库时间
  g_CheckInputNum         控制只能输入数字
  g_IDCardNumber      判断是否是身份证号码
  g_FormatDate(aDate,format) 格式化日期时间方法PARAMETER: aDate:js中的aDate对象,format-格式字符串.如:yyyy-MM-dd hh:mm:ss
  
  g_BeforePasteNum()  粘贴时控制只能贴入数字和回车 需要绑定onbeforePaste事件
  g_BeforePasteEnglish() 粘贴时控制只能贴入数字和字母，需要绑定onbeforePaste事件
  
  g_CompareDate       判断日期大小
  g_MonthsBetween	  计算月份差(忽略天，先将时间trunc到月，然后做比较)
**/
 
 
/**
 判断DBForm的指定字段是否为空，如果为空返回true，并alert警告。否则返回false
 pFormRowSet -- DBFormRowSet对象
 pFieldNames -- 校验的字段名称串，每个字符以"," 分割
*/
 
function g_FormFieldIsNull(pFormRowSet,pFieldNames)
{
	var flag = false;
	if(pFormRowSet == null || pFieldNames==null || pFieldNames=="")
	{
		alert(g_I18NMessage("appframe_core","commutil_param_null"));
		return flag;
	}
    var fieldArray = pFieldNames.split(",");
	if(fieldArray!=null && fieldArray.length>0){
	  for (var i=0;i<fieldArray.length ;i++ )
	  {
	var fieldValue = pFormRowSet.getValue(fieldArray[i]);
	if(fieldValue!=null && g_StringTrim(fieldValue)==""){
 
		  var fieldText = pFormRowSet.getTitle(fieldArray[i]);
		  alert(fieldText+g_I18NMessage("appframe_core","commutil_cannot_null"));
		  flag = true;
		  break;
		}
	  }
 
	}
    return flag;
 
}
 
 
 
 /*********************************************************************************
* FUNCTION: g_GetObjXY 获取页面中某个元素的绝对座标
* PARAMETER: obj,dhtml 对象
* RETURNS: array，array['x']=xpos,array['y']=ypos
*********************************************************************************/
function g_GetObjXY(Obj)
 {
	 for(var sumTop=0,sumLeft=0;Obj!=document.body;sumTop+=Obj.offsetTop,sumLeft+=Obj.offsetLeft,Obj=Obj.offsetParent);
	return {left:sumLeft,top:sumTop};
 
 }
 
 
 
 /*********************************************************************************
* FUNCTION: g_IsEmail 判断合法的email地址
* PARAMETER: String (Email Address)
* RETURNS: TRUE if the String is a valid Email address
* FALSE if the passed string is not a valid Email Address
* EMAIL FORMAT: AnyName@EmailServer e.g; webmaster@hotmail.com
* @ sign can appear only once in the email address.
*********************************************************************************/
function g_IsEmail (theStr) {
if(theStr==null || theStr=='')return true;
var atIndex = theStr.indexOf('@');
var dotIndex = theStr.indexOf('.', atIndex);
var flag = true;
theSub = theStr.substring(0, dotIndex+1)
 
if ((atIndex < 1)||(atIndex != theStr.lastIndexOf('@'))||(dotIndex < atIndex + 2)||(theStr.length <= theSub.length))
{ return(false); }
else { return(true); }
}
 
 
 
/*********************************************************************************
* FUNCTION: g_IsDigit 校验是否全由数字组成
* PARAMETER: 字符串s
* RETURNS: true/false
*********************************************************************************/
 
function g_IsDigit(s)
{
 if(s==null) return false;
 if(s=='')return true;
 s=''+s;
 if(s.substring(0,1)=='-' && s.length>1)s=s.substring(1,s.length);
 
var patrn=/^[0-9]*$/;
if (!patrn.exec(s)) return false;
return true
}
 
/*********************************************************************************
* FUNCTION: g_IsFloat 校验是否是小数
* PARAMETER: 字符串s.pDecimal精度（保留多少位小数 值为0或者－1时不限制精度）
* RETURNS: true/false
*********************************************************************************/
function g_IsFloat(s,pDecimal)
{
 if(s==null) return false;
 s=''+s;
 if(s=='')return true;
 
 if(s.substring(0,1)=='-' && s.length>1)s=s.substring(1,s.length);
 
 var dec = -1;
 if(parseInt(pDecimal)!=NaN)
   dec = pDecimal;
 var reg = "^[0-9]+(\\.[0-9]{1,"+dec+"})?$";
 if(dec==0 || dec==-1)
 {
   reg = "^[0-9]+(\\.[0-9]{1,10000})?$";
 }
 var re = new RegExp(reg,"g");
 if(!s.match(re)) return false;
 else return true;
 
}
 
 
/*********************************************************************************
* FUNCTION: g_IsTeleNumber 校验普通电话、传真号码：可以“+”开头，除数字外，可含有“-”
* PARAMETER: 字符串s
* RETURNS: true/false
*********************************************************************************/
 
function g_IsTeleNumber_bak(s)
{
if(s==null || s=='')return true;
if(s.length>20)return false;
var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/;
if (!patrn.exec(s)) return false
return true
}
function g_IsTeleNumber(s)
{
if(s==null || s=='')return true;
if(s.length>20 || s.length<4)return false;
 
var re = new RegExp(/^[\d'('')'' '\*\-]*$/);
 
if(re.exec(s))return true;
else return false;
}
/*********************************************************************************
* FUNCTION: g_IsMobileNumber 校验手机号码：必须以数字开头，除数字外，可含有“-”
* PARAMETER: 字符串s
* RETURNS: true/false
*********************************************************************************/
 
function g_IsMobileNumber_bak(s)
{
var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/;
if (!patrn.exec(s)) return false
return true
}
 
//新的手机号码验证，以1打头，11位数字
function g_IsMobileNumber(s)
{
if(s==null || s=='')return true;
if( s.length!=11 || ( s.substring(0,2)!='13' && s.substring(0,2)!='15'))return false;
if(!g_IsDigit(s))return false;
return true
}
/*********************************************************************************
* FUNCTION: g_IsPostalCode 校验邮政编码 6位数字
* PARAMETER: 字符串s
* RETURNS: true/false
*********************************************************************************/
 
//
function g_IsPostalCode(s)
{
if(s==null || s=='')return true;
var patrn=/^[0-9]{6}$/;
if (!patrn.exec(s)) return false
return true
}
 
 
 
 
 
/*********************************************************************************
* FUNCTION: g_IsDate 校验日期是否合法yyyy-mm-dd这种格式的日期
* PARAMETER: 字符串s
* RETURNS: true/false
*********************************************************************************/
 
function g_IsDate(str)
{
	if(str=='')return true;
   if(DATE_SEPARATOR==null) DATE_SEPARATOR ="-";
   var regExpStr = "^\\d{4}" + DATE_SEPARATOR + "\\d{1,2}" + DATE_SEPARATOR + "\\d{1,2}$";
   var patrn = new RegExp(regExpStr);
 
   if(!patrn.exec(str)) return false;
   var dateArray  = str.split(DATE_SEPARATOR);
   var d= new Date(dateArray[0],dateArray[1]-1,dateArray[2]);
   var issame =(d && (d.getFullYear()==dateArray[0])&& (d.getMonth()+1==dateArray[1]) &&(d.getDate()==dateArray[2]));
   if (!issame)
       {
	 return false;
       }
   return true;
}
 
/*********************************************************************************
* FUNCTION: g_IsDateTime 校验日期是否合法yyyy-mm-dd H24:MI:SS这种格式的日期+时间
* PARAMETER: 字符串s
* RETURNS: true/false
*********************************************************************************/
function g_IsDateTime(str)
{
	if(str=='')return true;
   if(DATE_SEPARATOR==null) DATE_SEPARATOR ="-";
   var regExpStr = "^\\d{4}" + DATE_SEPARATOR + "\\d{1,2}" + DATE_SEPARATOR + "\\d{1,2}\\s\\d{2}:\\d{1,2}:\\d{1,2}$";
   var patrn = new RegExp(regExpStr);
 
   if(!patrn.exec(str)) return false;
   var dateTimeArray = str.split(" ");
   if(dateTimeArray==null || dateTimeArray.length!=2) return false;
   var dateArray  = dateTimeArray[0].split(DATE_SEPARATOR);
   var timeArray = dateTimeArray[1].split(":");
   var d= new Date(dateArray[0],dateArray[1]-1,dateArray[2],timeArray[0],timeArray[1],timeArray[2]);
   var issame =(d && (d.getFullYear()==dateArray[0])&& (d.getMonth()+1==dateArray[1]) &&(d.getDate()==dateArray[2]) && (d.getHours() == timeArray[0]) && (d.getMinutes()== timeArray[1]) && (d.getSeconds()== timeArray[2])  );
   if (!issame)
       {
	 return false;
       }
   return true;
}
 
/*********************************************************************************
* FUNCTION: 获取字符串的长度，如果字符串中包括中文等双字节代码，则其长度算为2。
* PARAMETER: 字符串s
* RETURNS: int
*********************************************************************************/
function g_GetStrLen(str){
  str = str.toString(10);
  return str.replace(/[^\x00-\xff]/g,"aa").length;
}
 
/*********************************************************************************
* FUNCTION: 获取子字符串，参数长度为字节长度
* PARAMETER: str字符串，length获取长度，已字节为单位，如双字节，按照2处理，子串取ground
* RETURNS: int
*********************************************************************************/
function g_getSubStrInByte(str,lenth){
  str = str.toString(10);
  var tmpstr= str.replace(/[^\x00-\xff]/g,"\x0b\x0c");
 
	tmpstr =tmpstr.substring(0,lenth);
	tmpstr = tmpstr.replace(/\x0b/g,'');
	return str.substring(0,tmpstr.length);
}
 
/*********************************************************************************
* FUNCTION: 字符串trim方法，取消到前后的空格
* PARAMETER: 字符串s
* RETURNS: string字符串
*********************************************************************************/
function g_StringTrim(str){
  str = str.toString(10);
  return str.replace(/(^\s*)|(\s*$)/g, "");
}
 
 
 
/*********************************************************************************
* FUNCTION: 请求数据库获取数据库的日期和时间
* PARAMETER: null
* RETURNS: string字符串
*********************************************************************************/
function g_GetSysDateTime()
{
     var _gNode = null;
     var xml= new ActiveXObject("Msxml.DOMDocument");
     xml.async = false;
     var url=  _gModuleName+ "/business/com.ai.appframe2.web.DefaultAction?action=getSysDateTime";
     var b = xml.load(url);
     if(!b){
	    alert(g_I18NMessage("appframe_core","commutil_gettime_err"));
		return null;
	  }
 
      var xmlNode = xml.documentElement;
      var ud = createUserDataClass(xmlNode,true);
      return ud.getValueByName("DateTime");
}
 
 
 
/*********************************************************************************
* FUNCTION: 请求数据库获取数据库日期
* PARAMETER: null
* RETURNS: string字符串
*********************************************************************************/
 
function g_GetSysDate()
{
   var dateTime = g_GetSysDateTime();
   var date = null;
   if(dateTime!=null && dateTime.indexOf(' ')!=null)
	{
	   date = dateTime.substring(0,dateTime.indexOf(' '));
	}
  return date;
}
 
/*********************************************************************************
* FUNCTION: 请求数据库获取数据库的时间
* PARAMETER: null
* RETURNS: string字符串
*********************************************************************************/
function g_GetSysTime()
{
   var dateTime = g_GetSysDateTime();
   var time = null;
   if(dateTime!=null && dateTime.indexOf(' ')!=null)
	{
	   time = dateTime.substring(dateTime.indexOf(' ')+1,dateTime.length);
	}
  return time;
}
 
 
/*********************************************************************************
* FUNCTION: 控制只能输入数字和回车
* PARAMETER: null
* RETURNS: null
*********************************************************************************/
function g_CheckInputNum(obj){
  var keyCode = event.keyCode;
 
  if(keyCode==8)return;
  if(keyCode==46)return;
  if(keyCode==35)return;
  if(keyCode==36)return;
  if(keyCode==37)return;
  if(keyCode==39)return;
  if(event.keyCode==13)return;
 
  //支持ctrl + a、v、x、c
  if(event.ctrlKey && (keyCode==65 || keyCode==67
    ||keyCode==86 || keyCode==88)){
    if(keyCode==86){
      var str = window.clipboardData.getData('text');
      if(str!=null){
        str = str.replace(/[^\d\n]/g,'');
        str = str.replace(/[\n]+/g,'\n');
        window.clipboardData.setData('Text',str);
      }
    }
    return;
  }
 
  if(48>event.keyCode || (event.keyCode > 57 && event.keyCode < 96)
     || event.keyCode >105 ){
    event.returnValue=false;
  }
  //对微软输入法的特殊限制
  if(keyCode ==229 && obj !=null){
    obj.disabled = true;
    obj.disabled = false;
    obj.focus();
    obj.value = obj.value.replace(/[^\d]/g,'');
  }
}
 
/*********************************************************************************
* FUNCTION: 控制只能输入数字或字母等
* 允许的字母如下："0123456789-_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ "
* PARAMETER: null
* RETURNS: null
*********************************************************************************/
 
function g_CheckInputEnglish(obj){
  var keyCode = event.keyCode;
 
  if(keyCode==8)return;
  if(keyCode==46)return;
  if(keyCode==35)return;
  if(keyCode==36)return;
  if(keyCode==37)return;
  if(keyCode==39)return;
  if(event.keyCode==13)return;
 
  //支持ctrl + a、v、x、c
  if(event.ctrlKey && (keyCode==65 || keyCode==67
    ||keyCode==86 || keyCode==88)){
    //
    if(keyCode==86){
      var str = window.clipboardData.getData('text');
      if(str!=null){
        str = str.replace(/[\W]/g,'');
        window.clipboardData.setData('Text',str);
      }
    }
    return;
  }
 
  var checkOK = "0123456789-_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ ";
 
  var str = String.fromCharCode(keyCode);
 
  if(checkOK.indexOf(str)<0 ){
    event.returnValue=false;
  }
  //对微软输入法的特殊限制
  if(keyCode ==229 && obj !=null){
    obj.disabled = true;
    obj.disabled = false;
    obj.focus();
    obj.value = obj.value.replace(/[\W]/g,'')
  }
}
 
 
//判断是否是身份证号码
function g_IDCardNumber(value){
  if(value=='' || value==null)return true;
  var length = value.length;
 
  if(length ==15){
    if(!g_IsDigit(value) || value.substring(0,1)=='-'){
      return false;
    }
    return true;
  }else if(length ==18){
    //前17位必须是数字
    for (i= 0; i < 17;  i++){
      code = value.charCodeAt(i);
      if(code<48 || code>57)return false;
    }
    //18位身份证号码的最后一位可以是数字或英文字母
    code = value.charCodeAt(17);
    if(code>=48 && code<=57 || code>=65 && code<=90 || code>=97 && code<=122){
      return true;
    }
  }
  //位数不为15或者18则返回
  return false;
}
 
//判断日期大小,输入两个日期字符串，返回两个日期的大小
// 0一样大 ，1 第一日期大 ，-1 第二个日期大,-2错误
function g_CompareDate(date_str1 ,date_str2){
  if(date_str1 ==null)date_str1='';
  if(date_str2==null ) date_str2='';
 
  if(date_str1 ==date_str2)return 0;
 
  if( !g_IsDateTime(date_str1) && !g_IsDate(date_str1)
      || !g_IsDateTime(date_str2) && !g_IsDate(date_str2) ){
    alert(g_I18NMessage("appframe_core","commutil_comparedate_err"));
    return -2;
  }
 
  if(date_str1 =='' && date_str2 !='') return -1;
  if(date_str2 =='' && date_str1 !='')return 1;
 
  var hour =0;
  var min =0;
  var sec =0;
 
  var dateTimeArray = date_str1.split(" ");
  var dateArray  = dateTimeArray[0].split(DATE_SEPARATOR);
  if(dateTimeArray.length>1){
    var timeArray = dateTimeArray[1].split(":");
    hour = timeArray[0];
    min = timeArray[1]
    sec = timeArray[2]
  }
  var d1= new Date(dateArray[0],dateArray[1]-1,dateArray[2],hour ,min ,sec);
 
  hour =0;
  min =0;
  sec =0;
 
  dateTimeArray = date_str2.split(" ");
  dateArray  = dateTimeArray[0].split(DATE_SEPARATOR);
  if(dateTimeArray.length>1){
    var timeArray = dateTimeArray[1].split(":");
    hour = timeArray[0];
    min = timeArray[1]
    sec = timeArray[2]
  }
  var d2= new Date(dateArray[0],dateArray[1]-1,dateArray[2],hour ,min ,sec);
 
  if (d1.getTime()==d2.getTime()) return 0;
  if(d1.getTime()>d2.getTime())return 1;
  else return -1;
}
/**
判断月份差,输入两个日期字符串，返回两个月份差
如果输入的是非法值，抛出异常
(year1-year2)*12+(month1-month2)
add by yangbb
*/
function g_MonthsBetween(date_str1 ,date_str2){
	if(date_str1 ==null){
		date_str1='';
	}	
    if(date_str2==null ){
    	date_str2='';
    }	
 
    if(date_str1 ==date_str2){
    	return 0;
	}
	
    if( !g_IsDateTime(date_str1) && !g_IsDate(date_str1)|| !g_IsDateTime(date_str2) && !g_IsDate(date_str2) ){
    	alert(g_I18NMessage("appframe_core","commutil_comparedate_err"));
    	//抛出异常
    	throw new Error(g_I18NMessage("appframe_core","commutil_not_date"));
  	}
 
	//解析时间字符串
	var year1 =0;
    var month1 =0;
    var day1 =0;
	var dateTimeArray = date_str1.split(" ");
  	var dateArray  = dateTimeArray[0].split(DATE_SEPARATOR);
  	year1=dateArray[0];
  	month1=dateArray[1];
  	day1=dateArray[2];
  	
  	var year2 =0;
    var month2 =0;
    var day2 =0;
  	dateTimeArray = date_str2.split(" ");
  	dateArray  = dateTimeArray[0].split(DATE_SEPARATOR);
  	year2=dateArray[0];
  	month2=dateArray[1];
  	day2=dateArray[2];
  	
	return (year1-year2)*12+(month1-month2);
}
 
//校验密码是否合法 ,8位非空字母 ，包含数字和字母
function checkPSWFormatValid(psw){
  if(psw==null || psw.length<8){
    alert(g_I18NMessage("appframe_core","commutil_pwd_len"));
    return false;
  }
  if(psw.indexOf(' ')>-1 || psw.indexOf('&')>-1){
    alert(g_I18NMessage("appframe_core","commutil_pwd_black"));
    return false;
  }
 
  var bNumber = false;//判断密码是否含有数字
  var bAlphe = false; //判断是否含有英文字母
 
  for (i = 0;  i < psw.length;  i++){
      //如果含有英文字母和数字，则返回true
      if(bNumber && bAlphe ){
        return true;
      }
      code = psw.charCodeAt(i);
      //判断是否包含数字
      if(!bNumber){
        if(code>=48 && code<=57){
           bNumber = true;
           continue;
        }
      }
      //判断是否包含英文字母
      if(!bAlphe){
        if(code>=65 && code<=90 || code>=97 && code<=122){
           bAlphe = true;
        }
      }
   }
   if(bNumber && bAlphe ){
        return true;
   }
   alert(g_I18NMessage("appframe_core","commutil_pwd_all"));
   return false;
}
 
 
/*********************************************************************************
* FUNCTION: 格式化日期时间方法
* PARAMETER: aDate:js中的aDate对象,format-格式字符串.如:yyyy-MM-dd hh:mm:ss
* RETURNS: 格式后的日期时间字符串
* AUTHOR:ZLH
*********************************************************************************/
function g_FormatDate(aDate,format)
  {
    var o = {
    "M+" : aDate.getMonth()+1, //month
    "d+" : aDate.getDate(),    //day
    "h+" : aDate.getHours(),   //hour
    "m+" : aDate.getMinutes(), //minute
    "s+" : aDate.getSeconds(), //second
    "q+" : Math.floor((aDate.getMonth()+3)/3),  //quarter
    "S" : aDate.getMilliseconds() //millisecond
    }
    if(/(y+)/.test(format)) format=format.replace(RegExp.$1,
    (aDate.getFullYear()+"").substr(4 - RegExp.$1.length));
    for(var k in o)if(new RegExp("("+ k +")").test(format))
    format = format.replace(RegExp.$1,
    RegExp.$1.length==1 ? o[k] :
    ("00"+ o[k]).substr((""+ o[k]).length));
    return format;
  }
 
/*********************************************************************************
* FUNCTION: 粘贴时控制只能贴入数字和回车
* PARAMETER: null
* RETURNS: null
*********************************************************************************/
function g_BeforePasteNum(){
  var str = window.clipboardData.getData('text');
  if(str!=null){
    str = str.replace(/[^\d\n]/g,'');
    str = str.replace(/[\n]+/g,'\n');
    str = str.replace(/(^\s*)|(\s*$)/g, "");
    window.clipboardData.setData('Text',str);
  }
}
 
/*********************************************************************************
* FUNCTION: 粘贴时控制只能贴入数字和字母
* PARAMETER: null
* RETURNS: null
*********************************************************************************/
function g_BeforePasteEnglish(){
  var str = window.clipboardData.getData('text');
  if(str!=null){
    str = str.replace(/[\W]/g,'');
    window.clipboardData.setData('Text',str);
  }
}

/*********************************************************************************
* FUNCTION: 常规错误码
* PARAMETER: code
* RETURNS: msg
*********************************************************************************/
function g_baseCode(code){
  switch (code){
  	case '503':
  		return '输入错误'
  	case '504':
  		return '账号密码错误'
  	case '505':
  		return '账号被注销(停用)'
  	case '506':
  		return '未登录'
  	case '507':
  		return '无法删除'
  	case '508':
  		return '非通用业务错误'
  	case '510':
  		return '您输入的名称或编号已存在'
	case '501':
	case '502':
	case '509':
  	default:
  		return '数据不正确'
  		break;
  }
}

/*
* 正则验证
* @param s 验证字符串
* @param type 验证类型 money,china,mobile等 
* @return
*/
mCheck = function (s, type) {
    var objexp = "";
    switch (type) {
        case 'money': //金额格式,格式定义为带小数的正数，小数点后最多三位
            objexp = "^[0-9]+[\.][0-9]{0,3}$";
            break;
        case 'numletter_': //英文字母和数字和下划线组成   
            objexp = "^[0-9a-zA-Z\_]+$";
            break;
        case 'numletter': //英文字母和数字组成
            objexp = "^[0-9a-zA-Z]+$";
            break;
        case 'numletterchina': //汉字、字母、数字组成 
            objexp = "^[0-9a-zA-Z\u4e00-\u9fa5]+$";
            break;
        case 'email': //邮件地址格式 
            objexp = "^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$";
            break;
        case 'tel': //固话格式 
            objexp = "^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$";
            break;
        case 'mobile': //手机号码 
            objexp = "^[1][0-9][0-9]{9}$";  //^(13[0-9]|15[0-9]|18[0-9])([0-9]{8})$
            break;
        case 'compmobile': //公司电话
            objexp = "^([0-9]{2,3}-)?([0-9]{3,4}-)?([0-9]{7,8})$|^[1][0-9]{10}$"
            break;
        case 'decimal': //浮点数 
            objexp = "^[0-9]+([.][0-9]+)?$";
            break;
        case 'url': //网址 
            objexp = "(http://|https://){0,1}[\w\/\.\?\&\=]+";
            break;
        case 'date': //日期 YYYY-MM-DD格式
            objexp = "^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$";
            break;
        case 'int': //整数 
            objexp = "^[0-9]*[1-9][0-9]*$";
            break;
        case 'int+': //正整数包含0
            objexp = "^\\d+$";
            break;
        case 'int-': //负整数包含0
            objexp = "^((-\\d+)|(0+))$";
            break;
        case 'china': //中文 
            objexp = "^[\u0391-\uFFE5]+$";  //  /^[\u4E00-\u9FA5]{0,6}$/ 0至6位字符的中文
            break;
        case 'english':
            objexp = "[a-zA-Z]";
            break;
        case 'engNumber':  //英文和数字
            objexp = "/[^A-Za-z0-9]/g";
            break;
        case 'engNumber_':   //判断字符由字母和数字，下划线,点号组成.且开头的只能是下划线和字母 
			objexp = "/^([a-zA-z_]{1})([\w]*)$/g";
			break;
		case 'engNumber_dot':	//只能输入中文、英文、数字、@符号和.符号
			objexp = "/[^\a-\z\A-\Z0-9\u4E00-\u9FA5\@\.]/g";
			break;
		case 'Number_dot':	//只能输入数字和点号(注意:在[^\d\.]里的d不能写成大写D,否则就变成除了数字以外的所有字符)
			objexp = "/[^\d\.]/g";
			break;
		case 'fax':	//传真
			objexp = "^([0-9]{2,3}-)?([0-9]{3,4}-)?([0-9]{7,8})$";
			break;
		case 'postalcode':	//邮编
			objexp = "^[0-9]{6}$";
			break;
		case 'eIdCard':	//身份证
			objexp = "^[1-9]{1}[0-9]{14}$|^[1-9]{1}[0-9]{16}([0-9]|[xX])$";
			break;
    }
    var re = new RegExp(objexp);
    if (re.test(s)) {
        return true;
    } else {
    	return false;
  	}
};

/**
 * 获取http传入参数
 * @param name
 * @returns
 */
function GetQueryString(name)
{
     var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");
     var r = window.location.search.substr(1).match(reg);//search,查询？后面的参数，并匹配正则
     if(r!=null)return  unescape(r[2]); return null;
}
